From: Jonathan Dieter Date: Sun, 15 Apr 2018 18:46:16 +0000 (+0300) Subject: Change zck_get_index_digest and zck_get_data_digest to return string X-Git-Tag: archive/raspbian/1.1.9+ds1-1+rpi1~1^2~323 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=50e5a495a47a6add1f10d9b26694cae7e4dfb26c;p=zchunk.git Change zck_get_index_digest and zck_get_data_digest to return string version of digest and make sure digest isn't cleared after closing file for writing Signed-off-by: Jonathan Dieter --- diff --git a/src/lib/dl/dl.c b/src/lib/dl/dl.c index 3181ad9..8cec72a 100644 --- a/src/lib/dl/dl.c +++ b/src/lib/dl/dl.c @@ -458,12 +458,11 @@ int PUBLIC zck_dl_get_header(zckCtx *zck, zckDL *dl, char *url) { if(!zck_read_index_hash(zck)) return False; start += zck->hash_type.digest_size; - char *digest = zck_get_index_digest(zck); zck_log(ZCK_LOG_DEBUG, "Index hash: (%s)", zck_hash_name_from_type(zck_get_full_hash_type(zck))); - for(int i=0; i +#include #include #include #include @@ -54,7 +55,6 @@ int PUBLIC zck_close(zckCtx *zck) { if(!chunks_from_temp(zck)) return False; zck_log(ZCK_LOG_DEBUG, "Finished writing file, cleaning up\n"); - zck_index_free(zck); zck_comp_close(zck); if(zck->temp_fd) { close(zck->temp_fd); @@ -233,16 +233,24 @@ zckIndex PUBLIC *zck_get_index(zckCtx *zck) { return &(zck->index); } +char *get_digest_string(const char *digest, int size) { + char *str = zmalloc(size*2+1); + + for(int i=0; iindex_digest; + return get_digest_string(zck->index_digest, zck->hash_type.digest_size); } char PUBLIC *zck_get_data_digest(zckCtx *zck) { if(zck == NULL) return NULL; - return zck->full_hash_digest; + return get_digest_string(zck->full_hash_digest, zck->hash_type.digest_size); } ssize_t PUBLIC zck_get_header_length(zckCtx *zck) { diff --git a/src/zck_read_header.c b/src/zck_read_header.c index 0029260..a70574d 100644 --- a/src/zck_read_header.c +++ b/src/zck_read_header.c @@ -56,16 +56,12 @@ int main (int argc, char *argv[]) { close(src_fd); printf("Overall checksum type: %s\n", zck_hash_name_from_type(zck_get_full_hash_type(zck))); - printf("Index checksum: "); char *digest = zck_get_index_digest(zck); - for(int i=0; i